import http from '@/utils/http'

/**
 * 用户登录
 * @param {Object} data - 登录信息
 */
export function login(data) {
  return http.post('/auth/login', data);
}

/**
 * 获取当前用户信息
 */
export function getUserInfo() {
  return http.get('/users/info');
}

/**
 * 用户登出
 */
export function logout() {
  return http.post('/auth/logout');
}

/**
 * 修改密码
 * @param {Object} data - 密码信息
 */
export function changePassword(data) {
  return http.put('/users/password', data);
}

/**
 * 更新用户信息
 * @param {Object} data - 用户信息
 */
export function updateUserInfo(data) {
  return http.put('/users/profile', data);
}

/**
 * 上传头像
 * @param {FormData} formData - 包含头像文件的FormData
 */
export function uploadAvatar(formData) {
  return http.post('/users/avatar', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
}

/**
 * 获取用户列表
 * @param {Object} params - 查询参数
 */
export function getUserList(params) {
  return http.get('/users', { params });
}

/**
 * 创建用户
 * @param {Object} data - 用户信息
 */
export function createUser(data) {
  return http.post('/users', data);
}

/**
 * 更新用户
 * @param {Number} id - 用户ID
 * @param {Object} data - 用户信息
 */
export function updateUser(id, data) {
  return http.put(`/users/${id}`, data);
}

/**
 * 删除用户
 * @param {Number} id - 用户ID
 */
export function deleteUser(id) {
  return http.delete(`/users/${id}`);
}

/**
 * 获取角色列表
 * @param {Object} params - 查询参数
 */
export function getRoleList(params) {
  return http.get('/roles', { params });
}

/**
 * 创建角色
 * @param {Object} data - 角色信息
 */
export function createRole(data) {
  return http.post('/roles', data);
}

/**
 * 更新角色
 * @param {Number} id - 角色ID
 * @param {Object} data - 角色信息
 */
export function updateRole(id, data) {
  return http.put(`/roles/${id}`, data);
}

/**
 * 删除角色
 * @param {Number} id - 角色ID
 */
export function deleteRole(id) {
  return http.delete(`/roles/${id}`);
}

/**
 * 获取角色用户数量
 * @param {Number} id - 角色ID
 */
export function getRoleUserCount(id) {
  return http.get(`/roles/${id}/user-count`);
}

export default {
  login,
  getUserInfo,
  logout,
  changePassword,
  updateUserInfo,
  uploadAvatar,
  getUserList,
  createUser,
  updateUser,
  deleteUser,
  getRoleList,
  createRole,
  updateRole,
  deleteRole,
  getRoleUserCount
} 